home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
digikit.zip
/
I14BBS.DOC
< prev
next >
Wrap
Text File
|
1993-02-04
|
21KB
|
725 lines
--------------------------------------------------------------------
function 0 - initialize a port
fct entry : ah = 0,
al = port parameters
76543210
||||||||
||||||``-- Data bits : 00 = 5 bits
|||||| 01 = 6 bits
|||||| 10 = 7 bits
|||||| 11 = 8 bits
|||||`---- Stop bits : 0 = 1 bit
||||| 1 = 2 bits
|||``----- Parity : 00 = none
||| 01 = odd
||| 10 = none
||| 11 = even
```------- Baud rate : 000 = 110 baud
= 19200 if EBIOS supported
001 = 150 baud
010 = 300 baud
011 = 600 baud
100 = 1200 baud
101 = 2400 baud
110 = 4800 baud
111 = 9600 baud
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh if error, otherwise :
= port status.
al = modem status.
--------------------------------------------------------------------
function 1h - output a character
fct entry : ah = 01h
al = character
dx = any valid channel # (DX min - DX max)
returns : ah = port status.
al = character sent.
--------------------------------------------------------------------
function 2h - input a character
fct entry : ah = 02h
dx = any valid channel # (DX min - DX max)
returns : ah = port status
al = received character
--------------------------------------------------------------------
function 3h - return port status
fct entry : ah = 03h
dx = any valid channel # (DX min - DX max)
returns : ah = port status
al = modem status register
--------------------------------------------------------------------
function 4h - extended port initialization
( Differs from COM/XI, PC/X* and MC/Xi DOS driver )
fct entry : ah = 04h
al = break setting
0 = No break.
1 = Break (Break will be set until reset)
bh = Parity
0 = no parity
1 = odd parity
2 = even parity
3 = stick parity odd (not supported)
4 = stick parity even (not supported)
bl = Stop bits
0 = 1 stop bit
1 = 2 stop bits
ch = Character length
0 = 5 bits
1 = 6 bits
2 = 7 bits
3 = 8 bits
cl = Baud rate
00h - 110 baud
01h - 150 baud
02h - 300 baud
03h - 600 baud
04h - 1200 baud
05h - 2400 baud
06h - 4800 baud
07h - 9600 baud
08h - 19200 baud
09h - 38400 baud
0Ah - 57600 baud
0Bh - 76800 baud
0Ch -115200 baud
0Dh - 50 baud
0Eh - 75 baud
0Fh - 134 baud
10h - 200 baud
11h - 1800 baud
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh on error, otherwise :
ah = port status
al = modem status
--------------------------------------------------------------------
function 5h - extended communications port control
( Differs from COM/XI, PC/X* and MC/Xi DOS driver )
fct entry : ah = 05h,
al = 00h - read modem control register
al = 01h - write modem control register
bl - modem control bits
bit 0 = DTR
bit 1 = RTS
dx = any valid channel # (DX min - DX max)
returns : ah = port status
al = modem status
bl = modem control register
bit 0 = DTR
bit 1 = RTS
NOTE : Access to OUT1, OUT2, and Loop bits are not supported. Also,
RTS and DTR will not be affected while hardware handshaking is active.
--------------------------------------------------------------------
Function 6h - Get Driver/Board Information
( New to PC/X* and MC/Xi DOS drivers, extends COM/Xi DOS driver function )
fct entry : ah = 6h
Sub-function 0
dx = any valid channel # (DX min - DX max)
al = 0h - get port name
return :
ah = 0FFh if error, else
al = Highest INT 14h function supported.
es:bx = Pointer to 8 byte ASCII string
String = "NoDriver" if No DOS support
is provided (INT 14h only)
String = Channel's DOS name
(eg "COM5 ")
Sub-function 1
al = 1h - get driver information
dx = any valid channel # (DX min - DX max)
return :
ah = 0FFh if error, else
ax = Total number of channels supported.
bx = Driver Version # (e.g. V 2.0.1 : BX = 0201h)
cx = Total number of board's supported.
dx = DX min - Lowest DX value for INT 14h calls.
Maximum DX value = Minimum value + AX - 1
Sub-function 2h
al = 2h - get board information
bx = Board Number (0-3).
dx = any valid channel # (DX min - DX max).
return :
ah = 0FFh if error, else
ah = IRQ number.
al = Board Type .
1 = COM/Xi
2 = MC/Xi
3 = PC/Xe
4 = PC/Xi
5 = PC/Xm
bx = Board's Dual-Ported Memory Segment.
cx = Number of channels on the board.
dx = Board's I/O port Address.
si = INT 14h DX value for board's first channel
Sub-function 0ffh
al = 0ffh - get driver name
dx = any valid channel # (DX min - DX max).
return :
ax = driver version #
cx = number of channels supported.
es:bx = pointer to drivers name (8 bytes 'DIGIFEP5').
--------------------------------------------------------------------
function 7h - Send Break
( New to PC/X* and MC/Xi DOS drivers. Old Com/Xi driver used
a 55 msec interval instead of this drivers 10 msec interval. )
fct entry : ah = 07h
al = 00h - Use default break time
= 01h then bx = break length in # of 10 msec
intervals.
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh on error
= 0 on success
--------------------------------------------------------------------
function 8h - alternate status check
fct entry : ah = 08h
dx = any valid channel # (DX min - DX max)
returns : zf = 0 and
ah = a non 0ffh number.
then ah = line status
al = Character queued
zf = 1 and
ah = 0ffh
then no char queued
Note : If zf = 1 then and only then will ah = 0ffh. Thus, you only need to
check zf OR ah to determine the success or failure of the call.
--------------------------------------------------------------------
function 9h - clear buffers
fct entry : ah = 09h,
dx = any valid channel # (DX min - DX max)
returns : ah = 0 fct good
ah = 0ffh fct bad (ccb timeout error)
--------------------------------------------------------------------
function 0ah - input queue check
fct entry : ah = 0ah
dx = any valid channel # (DX min - DX max)
returns : zf = 1 and dh = offh if error, otherwise
ax = number of queued characters
Note : This function differs from FCT 15h. Fct 0Ah returns the number
of data characters in the receive buffer, while function 15h
returns the number of bytes used in the buffer. Typically, each
recieved character uses only one byte of buffer space unless the
data byte is 0ffh or unless an error is associated with it. In
these cases, 2 and 3 bytes of buffer space are used, respectively.
Fct 0Ah disregards these extra bytes in it's returned count, while
function 15h does not.
Use fct 0Ah when you wish to know how many data bytes to read when
using functions 2h (input a character) or 0Fh (read string).
Use fct 15h when you want to know how many physical bytes of buffer
space are used.
If you were previously using the COM/Xi DOS driver "XIM232.SYS"
Functions 0Ah and 15h are swapped in this driver.
Also note that status bytes are not stored with every character in
the receive buffer as they where with the XIM232, XAPCM232 and
XIM232MC DOS drivers.
: If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
check zf OR dh to determine the success or failure of the call.
--------------------------------------------------------------------
function 0bh - Drop Handshake Lines
( New to PC/X* and MC/Xi DOS drivers )
fct entry : ah = 0bh
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh if errors
ah = 0 on success
This Function drops DTR and RTS. If Hardware handshaking is
active, it is disabled, the lines are dropped, and then it is
re-enabled.
--------------------------------------------------------------------
function 0ch - Get Channel Parameters
( New to PC/X* and MC/Xi DOS drivers changes and extends
COM/Xi DOS driver function. )
fct entry : ah = 0ch
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh on error
otherwise
ah = S/W flow control
bit 0 = tx s/w flow control (XON/XOFF)
bit 1 = rx " " " "
al = H/W flow control
bit 0 = DTR rx flow control
bit 1 = RTS rx flow control
bit 4 = CTS tx flow control
bit 5 = DSR tx flow control
bit 7 = DCD tx flow control
bh = Parity
0 = no parity
1 = odd parity
2 = even parity
bl = Stop bits
0 = 1 stop bit
1 = 2 stop bits
ch = Character length
0 = 5 bits
1 = 6 bits
2 = 7 bits
3 = 8 bits
cl = Baud rate
00h - 110 baud
01h - 150 baud
02h - 300 baud
03h - 600 baud
04h - 1200 baud
05h - 2400 baud
06h - 4800 baud
07h - 9600 baud
08h - 19200 baud
09h - 38400 baud
0Ah - 57400 baud
0Bh - 75600 baud
0Ch -115200 baud
0Dh - 50 baud
0Eh - 75 baud
0Fh - 134 baud
10h - 200 baud
11h - 1800 baud
--------------------------------------------------------------------
function 0dh - get pointer to character ready flag
fct entry : ah = 0ah
dx = any valid channel # (DX min - DX max)
returns : es:bx = pointer to the flag
flag = 0 : rx buffer empty
flag = 0ffh : char available in rx buffer
note : The driver uses interrupts from the board, therfore an
IRQ line must be selected for this function to work.
--------------------------------------------------------------------
function 0eh - write string
fct entry : ah = 0eh
dx = any valid channel # (DX min - DX max)
cx = # of chars in string
es:bx = pointer to string
returns : ax = # chars transmitted
zf = 1 and dh = 0ffh if errors
NOTE : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
check zf OR dh to determine the success or failure of the call.
--------------------------------------------------------------------
function 0fh - read string
fct entry : ah = 0fh
dx = any valid channel # (DX min - DX max)
cx = # of chars to read
es:bx = pointer to callers buffer
returns : ax = # chars read
zf = 1 and dh = 0ffh if errors
(line sts or wrong # chars rtnd)
NOTE : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
check zf OR dh to determine the success or failure of the call.
--------------------------------------------------------------------
function 10h - clear rx buffer
fct entry : ah = 10h
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh error
ah = 0 success
--------------------------------------------------------------------
function 11h - clear tx buffer
fct entry : ah = 11h
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh fct error
ah = 0 fct good
--------------------------------------------------------------------
function 12h - get tx buffer free space
fct entry : ah = 12h
dx = any valid channel # (DX min - DX max)
returns : ax = # of free bytes
--------------------------------------------------------------------
function 13h - Set Handshake Lines
( New to PC/X* and MC/Xi DOS drivers )
fct entry : ah = 13
dx = any valid channel # (DX min - DX max)
returns : ah = 0ffh if errors
ah = 0 on success
This Function raises DTR and RTS. If Hardware handshaking is
active, it is disabled, the lines are raised, and then it is
re-enabled.
--------------------------------------------------------------------
function 14h - Non destructive character read
( New to PC/X* and MC/Xi DOS drivers )
fct entry : ah = 014h
dx = any valid channel # (DX min - DX max)
returns : ah = Line status
al = Character queued
--------------------------------------------------------------------
function 15h - input byte count
fct entry : ah = 015h
dx = any valid channel # (DX min - DX max)
returns : ah = # of used bytes in the receive buffer
( See note on FCT 0Ah )
------------------------------------------------------------------
function 16h - Reserved
( Old PC/X* Send CCB Command )
------------------------------------------------------------------
function 17h - Pause / Resume transmit
( New to PC/X* and MC/Xi, Old COM/Xi Get / Clear transmit pause )
fct entry: ah = 17h
al = 0, pause transmit
= 1, resume transmit
dx = any valid channel # (DX min - DX max)
returns: ah = 0ffh fct error
ah = 0 fct good
------------------------------------------------------------------
function 18h - Pause / Resume receive
( Old PC/X* and MC/Xi Send Bios Command, New to COM/Xi)
fct entry: ah = 18h
al = 0, pause receive
= 1, resume receive
dx = any valid channel # (DX min - DX max)
returns: ah = 0ffh fct error
ah = 0 fct good
------------------------------------------------------------------
function 19h - Reserved
( Old PC/X* set/reset special character Interrupt )
------------------------------------------------------------------
function 1ah - Reserved
( Old PC/X* get pointer to special character flag / counter )
--------------------------------------------------------------------
function 1bh - Get water marks / buffer size
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 1bh
al = 0 - Get Transmit Low water mark.
= 1 - Get Receive Low water mark.
= 2 - Get Receive High water mark.
dx = any valid channel # (DX min - DX max)
returns : ax = requested water mark.
bx = tx buffer size if al was 0
= rx buffer size if al was 1 or 2
zf = 1 and dh = 0ffh if error
Note : Transmit low water mark - The host may request an event (IRQ) when the
number of characters in the transmit buffer falls below this number.
: Receive low water mark - When receive is paused and the number
of characters in the receive buffer falls below this number,
receive is resumed.
: Receive high water mark - When receive is not paused and the
the number of characters in the receive buffer meets or exceeds
this value, transmit is paused.
: If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
check zf OR dh to determine the success or failure of the call.
--------------------------------------------------------------------
function 1ch - Set water marks
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 1ch
al = 0 - Set Transmit Low water mark.
= 1 - Set Receive Low water mark.
= 2 - Set Receive High water mark.
bx = water mark value.
dx = any valid channel # (DX min - DX max)
returns : ah = 0 on sucess.
= 0ffh on error.
--------------------------------------------------------------------
function 1dh - Reserved
--------------------------------------------------------------------
function 1eh - Set flow control
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 1eh
bh = S/W flow control
bit 0 = tx s/w flow control (XON/XOFF)
bit 1 = rx " " " "
bit 2 = set new XON/XOFF characters in CX
bl = H/W flow control
bit 0 = DTR rx flow control
bit 1 = RTS rx flow control
bit 4 = CTS tx flow control
bit 5 = DSR tx flow control
bit 7 = DCD tx flow control
ch = new XOFF character if BX bit 2 = 1
cl = new XON character if BX bit 2 = 1
dx = any valid channel # (DX min - DX max)
returns : ah = 0 on sucess.
= 0ffh on error.
--------------------------------------------------------------------
function 1fh - Enable / Disable Events
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 1fh
al = Event mask
76543210
|||||||`--- Event on BREAK received.
||||||`---- Event on TX low water mark.
|||||`----- Event on TX buffer empty.
||||`------ Event on RX data present.
|||`------- (Not Used)
||`-------- Event on Modem Change Signal.
``--------- (Not Used)
bl = Modem Signal if al bit 5 = 1
76543210
||||````-- (Not Used)
|||`------ CTS
||`------- DSR
|`-------- RI
`--------- DCD
dx = any valid channel # (DX min - DX max)
returns : ah = 0 on success
ah = ff if error
--------------------------------------------------------------------
EBIOS function 0f4h - Presence Test
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0f4h
dx = any valid channel # (DX min - DX max)
return : ax = 0
--------------------------------------------------------------------
EBIOS function 0fbh - Specify modem leads
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0fbh
al = modem leads
bit 0 = set/reset DTR output
bit 1 = set/reset RTS output
bit 4 = use CTS for input flow control.
bit 5 = use DSR for input flow control.
bit 6 = RI not supported
bit 7 = use DCD for input flow control.
dx = any valid channel # (DX min - DX max)
Note : If RTS or DTR flow control is active, these lines will not be
affected until that flow control is deselected.
--------------------------------------------------------------------
EBIOS function 0fch - receive with no wait
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0fch
dx = any valid channel # (DX min - DX max)
return : ah = line status
al = character
--------------------------------------------------------------------
EBIOS function 0fdh - retrieve buffer count
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0fdh
al = 1 - Get transmit buffer count.
= 2 - Get receive buffer count
dx = any valid channel # (DX min - DX max)
return : cx = character count
This function returns the number of characters in the specified
buffer.
--------------------------------------------------------------------
EBIOS function 0feh - Set pacing mode
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0feh
al = 0 - no pacing.
= 40h - XON/XOFF for Receive.
= 80h - XON/XOFF for Transmit, no RX pacing
= C0h - XON/XOFF for Receive and Transmit.
dx = any valid channel # (DX min - DX max)
Note : CTS and DSR transmit pacing is always activated by a call to this
function to emulate BIOS pacing. All other flow control (if any)
is disabled.
--------------------------------------------------------------------
EBIOS function 0ffh - Set buffered mode of operation
( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
fct entry : ah = 0ffh
al = 1 - Transmit buffer.
= 2 - Receive buffer.
cx = buffer size, 0 = terminate buffer mode.
dx = any valid channel # (DX min - DX max)
es:bx = pointer to buffer.
This function really has no effect, since the intellegent boards
use on-board buffering and thus have no need for host buffering.
--------------------------------------------------------------------